//仓库
//引入vue的包中引入ref响应式数据和computed计算属性
import { ref, computed } from 'vue'
//从pinia的包中引入defineStore的方法
import { defineStore } from 'pinia'

//组合式API的语法
//导出useCounterStore这个仓库对象
//defineStore(第一个参数：唯一的名字（id标识），第二个参数：对于数据状态操作的一些配置)
//defineStore函数需要传递两个参数，第一个参数:小仓库名字(唯一id，不可重复，
// 第一个参数:小仓库名字(唯一id，不可重复，用于区分是哪个store，这样就不会出现命名冲突，组件中使用仓库数据是通过定义变量(useCounterStore )接收defineStore方法返回的函数，和仓库名(counter)没有直接关系)

export const useCounterStore = defineStore('counter', () => {
  //定义响应式数据 -state（vue2-vuex）：共享的数据状态，在这里定义的数据，在任意一个组件都可以访问
  const count = ref(1)

  //计算定义的数据状态 -getters(vue2):只做数据计算，不做数据修改（不能修改源数据）
  const doubleCount = computed(() => count.value * 2)
  
  //修改定义的数据状态- actions(vue2):可以修改定义的数据状态
  function increment() {
    count.value++
  }

  //返回定义的数据和方法
  return { count, doubleCount, increment }
})
